<?php

/**
 * alltosun.com 抱抱币记录方法 bbcoin_record.php
 * ============================================================================
 * 版权所有 (C) 2009-2014 北京互动阳光科技有限公司，并保留所有权利。
 * 网站地址: http://www.alltosun.com
 * ----------------------------------------------------------------------------
 * 许可声明: 这是一个开源程序，未经许可不得将本软件的整体或任何部分用于商业用途及再发布。
 * ============================================================================
 * $Author: 高昂 (gaoa@alltosun.com) $
 * $Date: 2014-8-8 下午12:36:18 $
 * $Id: bbcoin_record_helper.php 156300 2015-12-17 04:13:18Z gaoa $
 */
class bbcoin_helper
{
    /**
     * 判断用户是否打开抱抱币
     */
    public static function is_bbcoin_enable($user_id) {
        if (!$user_id) {
            return 0;
        }

        $user_info = user_helper::get_user_info($user_id);
        if (!$user_info) {
            return 0;
        }

        $role_id = user_helper::get_user_role_id($user_id);

        if ($role_id == user_config::AGENCY) {
            return $user_info['is_bbcoin_enable'];
        } elseif ($role_id == user_config::STORE_MANAGER || $role_id == user_config::STORE_OWNER) {
            $store_info = store_helper::get_user_store($user_id);
            if (!$store_info) {
                $store_info = store_helper::get_store_info_by_user_id($user_id);
            }
            $dealer_info = user_helper::get_user_info($store_info['agency_id']);
            return $dealer_info['is_bbcoin_enable'];
        } else {
            return 0;
        }
    }

    /**
     * 打开抱抱币使用限制(是否是打开合伙人的抱抱币则合伙人旗下的门店都打开,还是自己是自己的限制?@TODO)
     */
    public static function open_bbcoin_limit($dealer_id) {
        user_helper::update_user_info($dealer_id, array('is_bbcoin_enable' => 1, 'open_bbcoin_time' => datetime()));
    }

    /**
     * 增加抱抱币记录(默认是确认到货增加抱抱币)
     */
    public static function add_bbcoin_record($param = array()) {

        $rule = array(
            'user_id' => null,
            'role_id' => 0,
            'admin_id' => 0,
            'bbcoin' => 0,
            'add_time' => datetime(),
            'res_id' => 2,
            'order_id' => 0,
            'extra' => '',
        );

        $record = parse_param($rule, $param);

        if (!$record['user_id']) {
            return false;
        }

        if ($record['admin_id'] > 0) {
            $record['role_id'] = user_helper::get_user_role_id($record['admin_id']);
        }

        $res = _model('bbcoin_record')->create($record);

        return $res ? true : false;
    }

    /**
     * 变更抱抱币
     *
     * @param {array}
     *  => {integer} user_id 当前登陆用户id
     *  => {integer} store_id 店铺的id
     *  => {integer} order_id 订单id
     *  => {integer} bbcoin 抱抱币数,如果需要减抱抱币,直接传负数即可
     *  => {integer} res_id 抱抱币类型id 参考 bbcoin_type
     *  => {integer} admin_id 管理员id
     *  => {integer} role_id 角色id
     *  => {string} extra 备注
     * @return {boolean}
     * @throws AnException
     */
    public static function change_bbcoin($param = array()) {

        $rule = array(
            'user_id' => null,
            'admin_id' => 0,
            'bbcoin' => 0,
            'res_id' => bbcoin_config::RES_TYPE_PURCHASE, // 默认进货
            'order_id' => 0,
            'extra' => '',
        );

        $data = parse_param($rule, $param);

        if (!$data['user_id'] || !is_numeric($data['bbcoin'])) {
            return false;
        }

        $user_info = user_helper::get_user_info($data['user_id']);
        if (!$user_info) {
            return false;
        }

        $new_bbcoin = $data['bbcoin'] + $user_info['bbcoin'];

        if ($new_bbcoin < 0) {
            $new_bbcoin = 0;
            $actual_change = $new_bbcoin - $user_info['bbcoin'];
            // 溢出部分添加到备注
            $data['extra'] .= ($data['extra'] ? ', ' : '') .
                              '操作值:' .
                              intval($data['bbcoin']) .
                              ' 实际变化:' .
                              intval($actual_change) .
                              ' 无效溢出:' .
                              intval($data['bbcoin'] - $actual_change);
            // 实际的变化值
            $data['bbcoin'] = $actual_change;
        }

        // if ($data['bbcoin'] != 0) {
        $res = user_helper::update_user_info($data['user_id'], array(
            'bbcoin' => $new_bbcoin,
            'update_time' => datetime()
        ));
        if (!$res) {
            return false;
        }
        // }

        // 仅仅是记录一下
        self::add_bbcoin_record($data);

        return true;
    }

    public static function get_bbcoin_by_user_id($user_id) {
        return _uri('user', $user_id, 'bbcoin');
    }
}

?>